/**
在 Node.js 中，文件的读取是一个常见的操作，主要通过  fs  模块来实现。以下是对 Node.js 中文件读取的说明和总结：
  1. 文件读取方法
  Node.js 的  fs  模块提供了多种文件读取的方法，主要包括异步和同步两种方式：
   1.1 异步读取
  -  fs.readFile(path, options, callback) :
    - 参数:
      -  path : 要读取的文件路径。
      -  options : 可选参数，通常用于指定文件编码（如 'utf8'），如果不指定，默认返回 Buffer。
      -  callback : 回调函数，接受两个参数：错误对象和文件内容。
    - 示例:
      const fs = require('fs');

      fs.readFile('example.txt', 'utf8', (err, data) => {
          if (err) {
              console.error('读取文件失败:', err);
              return;
          }
          console.log('文件内容:', data);
      });
   1.2 同步读取
  -  fs.readFileSync(path, options) :
    - 参数:
      -  path : 要读取的文件路径。
      -  options : 可选参数，通常用于指定文件编码。
    - 返回值: 文件内容（字符串或 Buffer）。
    - 示例:
      const fs = require('fs');

      try {
          const data = fs.readFileSync('example.txt', 'utf8');
          console.log('文件内容:', data);
      } catch (err) {
          console.error('读取文件失败:', err);
      }
  2. 错误处理
  在读取文件时，错误处理非常重要。无论是异步还是同步读取，都应考虑文件不存在、权限不足等可能导致的错误。

  3. 文件编码
  - 在读取文本文件时，通常需要指定编码格式（如 'utf8'），以确保正确地将文件内容转换为字符串。如果不指定编码，返回的将是 Buffer 对象。

  4. 使用场景
  - 文件读取操作广泛应用于配置文件加载、日志文件分析、数据文件处理等场景。

  5. 总结
  Node.js 的  fs  模块提供了灵活的文件读取方式，开发者可以根据具体需求选择异步或同步方法。异步方法适合处理大量文件操作，而同步方法则适合简单的读取任务。掌握这些方法后，开发者可以高效地进行文件内容的读取和处理。
 */
// COMMONJS
const fs = require("fs");

// 1. 同步读取
const syncFile = fs.readFileSync("./file/syncfile.txt", {
  encoding: "utf-8", // 指定编码格式
});

console.log(syncFile);

// 2. 异步读取
fs.readFile(
  "./file/asyncfile.txt",
  {
    encoding: "utf-8",
  },
  (err, data) => {
    if (err) {
      console.error("读取文件失败:", err);
    } else {
      console.log("文件内容:", data);
    }
  }
);
console.log("后续的代码~");

// 3. 异步读取: 使用 Promise
fs.promises
  .readFile("./file/promiseFile.txt", "utf-8")
  .then((data) => {
    console.log("文件内容:", data);
  })
  .catch((err) => {
    console.error("读取文件失败:", err);
  });

// 4. 判断文件是否存在
fs.access("./file/asyncfile.txt", fs.constants.F_OK, (err) => {
  if (err) {
    console.error("文件不存在:", err);
  } else {
    console.log("文件存在");
  }
});
